大家好,欢迎大家走进R性能测试分析与实战,
_什么是web性能测试及web性能测试的目的和测试方法的条件
今天的个知识点就是给大家介绍一下什么是性能测试以及性能测试的目的
随着互联网用户的巨增,商家和使用者都越来越重视软件的性能表现。
比如,大家较熟悉的火车票订票网站,在每年的春运,网站都需要承载几十万,甚至上百万用户的订票需求,而不瘫痪。这就是一种软件性能表现。
这里我们所说的性能,其实就是一种指标,它是看软件系统对其及当前性能指标要求的符合程度。是可以用时间来衡量的。
而不同的层面用户关注的性能表现是不一样的。
如果你是用户,你所关注的一般是操作的响应时间,比如你进行点击某个网站进行登录操作,多时间登录到网站,这所花费的时间就是用户对软件性能的一种直观印。
如果你是系统管理员,你所关注的除了响应时间上与用户的视角是一至的外,还需要关注系统资源的使用情况,包括CPU的使用情况,内存,I/O读写等一些其它有数据交互的情况,如,管理员需要考虑当前软件在某一时刻,有00 个,或是00 个用户发操作是否会有软件性能问题。
如果你是软件开发工程师,你所关注的是用户和管理员的所有关注的所有问题,还需要关注,内存泄漏,数据库是否会出现死锁,中间件和应用服务器等一系列问题。
那我们做web性能测试的主要目的是什么呢?
:获得web应用的性能表现,指的就是性能指标是否达到性能测试方案设定的要求。比如:登录的响应时间需要符合0原则,而如果大部分发用户,操作**过7s,虽然符合指标要求,但需要优。
:发现验证,需要修改web应用网站受影响的性能BUG。这个受影响的因就比较多了,比如,内存,硬盘,网速,环境配置,WEB服务器等,都会对网站造成性能BUG。
:可以为网站优提供数据参考标准。比如某飞机票订票网站,根据每天用户订票时间段的不同,航班订票量的不同,可以选取负载测试和压力测试。而节假日订票量大增的情况。可以选取尖峰冲击测试了。性能测试后得出的一些性能测试数据,假如得出结果是系统在达到00万用户时同时订北京飞往上海航班晚间时段时,系统处于瓶颈状态。这00万数量,系统瓶颈。就是我们需要网站优的数据参考了。我们性能测试工程师就是围绕这三点进行性能测试的。
什么是性能测试和目的就给大家介绍到这里。
_web性能测试执行的前提条件
现在给大家介绍一下web性能测试的执行条件
对于进行WEB性能测试的方法是有一定的前提条件的。
:首先我们要测试的WEB网站,一定是已经稳定的版本,也就是已经上线一段时间的版本。在功能上本是没有BUG的。
:我们测试的环境,必须与开发环境分开,尽量模拟真实用户的使用环境进行性能测试。一定要有一个大至的参照物,比如硬件环境要接近于用户使用环境,软件环境尽量保持一致,这一点是非常重要的,否则我们的做的性能测试是没有意义的。
这就是做WEB性能测试执行的前提条件。你一定要记住哦。
_性能测试工具R简介
下面就给大家介绍一下性能测试的工具R
做好性能测试,除了有扎实的性能测试理论础处,必须借助性能测试工具,
比如我们需要模拟上百万用户发使用当前网站,测试当前网站的负载能力。那上百万用户如何获得呢?使用自动测试工具,是较节省人力和物力的。
市场上有很多性能测试工具。我们课程里主要使用是HP公司出的性能测试工具oaRuer
它是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施发负载及实时性能监测的方式来确认和查找问题,
oaRuer 能够对整个企业架构进行测试。通过使用oaRuer ,企业能限度地缩短测试时间,优性能和加速应用系统的发布周期。非常适用于各种体系架构的自动负载测试工具,同时它还支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。
也就是说,需要学会性能指标设定与分析结合使用R工具才能做好性能测试工作。
下面就给大家演示一个R的安装过程
_性能测试的流程
我们学习性能测试,一定要知道性能测试的本流程,
我们一块来看一下,共分为**步。
:确认web应用的业务流程:
在实际的工作当中,做性能测试的步,需要找到系统业务频繁操作的模块,因为这样的模块会对系统造成一定的压力。
比如订票系统,可能会出现的性能问题是登录压力,订票压力,这就可以分成大业务流程 分别进行性能测试了, 当然也可以进行混合场景测试。
:确认性能测试达标的标准
这个与我们之前的功能测试业务清晰度的标准不同,性能测试标准需要结合实际情况和项目阶段,开会大家讨论而定,定出合理的性能指标达标标准,这个标准是通过数据值来体现的。比如:某网银网站,每天在线用户,和进行交易的用户量是巨大的,网银服务器也同时承受巨大的压力,这里我们需要规划好主要的性能目标,比如:在当前的使用环境下峰值交易压力下系统性能表现情况。未来年预期峰值交易压力下的系统性能表现情况。系统能获取支持的处理能力表现,一般指的是交易数,和发数,是通过数字来体现的。再者需要考察当前网银的服务能力,也就是我们进行网银业务交易时,系统的交易响应时间,是否能让大部分使用者接受。最后就是要发现系统可能存的瓶颈点。这些我们需要写在下一步的方案里。我们下一步就是
:编写性能测试计划与方案
这个环节是非常重要的,本门课程的**大模块主要就是学习性能指标的设定和计算解析,较终是要写到此方案里面的,作为后面使用工具进行性能测试的准则。
我们可以看一下某项目的性能测试计划与方案目录,大家可以清楚的知道,大至可以分为五大部分,部分是,测试简介,这个部分主要内容是,测试的目标,目标就是我们刚才提到本流程的内容。*部分是性能指标需求,大家看到的指标,是我们在下一章节学习的内容,朋友们一定要记住学会分析指标,才能做好性能测试。*三部分就是测试方案,这是个非常重要的环节,是需要性能测试工程师,去设计R的使用场景的,例如可以写这样一个简单的场景:对当前转账事务模块进行性能测试,发用户00人,CPU使用率分别在% 70% 0%情况下,使用R进行负载测试,压力测试。运行时间为小时。根据这个业务结合R工具进行场景设计是这样的,发00用户,每S加载一个用户进行转账操作,共运行小时,添加集合点统一进行负载测试。这是就是一个简单场景结合R工具的设计。*四部分是:测试实施情况,主要是性能测试监控过程部分记录。*五部分是测试结果,这也是重点环节,使用R运行*三部分设计的场景后,得出性能测试分析图和数据,进行指标值和实际值对比分析,找出性能BUG的真正原因。这就是整个性能测试方案的涉及的大至内容。
:设计测试过程
第四步就是设计测试过程。
这个设计测试过程,其实是方案里面的*三部分,就是场景的设计。我们设计好的场景,还需要编写性能测试用例表。每一个场景对应一个测试用例
我们以刚刚的例子为例:设计好的场景是这样的:发00用户,每S加载一个用户进行转账操作,共运行小时,添加集合点统一进行负载测试。
根据这个场景,我们设计出如下测试用例(插入网银转账性能测试用例.oc):主要是编写模拟场景的录制过程,编写期望性能指标值。我们这里填写的是不能**过 s。性能测试用例编写好后,我们需要进行配置测试环境,就是我们的*五个步骤。
:配置测试环境
web应用的性能测试环境要尽可能地接近真实的用户使用环境,才能保证我们测试数据的有效性。这个需要公司的开发人员配合,获取某些权限,或屏蔽掉不必要的功能。
:测试过程设计的具体表现
这个我们需要使用工具R,根据*步骤,编写的性能测试用例表进行脚本录制。录制后的脚本,使用代码修改优后,进行R场景的设置。
这第六步到最后的几个步骤都是使用R进行测试的。
7:执行性能测试的场景
这里的场景设置,是要根据方案里面提到的*三部分的设计R场景的需求,来进行设置。刚才提到的场景例子是:对当前转账事务模块进行性能测试,发00用户,每 S加载一个用户进行转账操作,共运行小时,添加集合点统一进行负载测试。其中:发用户数,每s加载用户,运行小时,添加集合点,都是通过R工具进行设置的。
:分析性能测试
使用R工具生成运行场景后的性能测试报告,与我们之前定的性能指标相比较,分析出软件系统的性能问题。
9:web应用性能方面的改进
当我们分析出性能问题,公司需要开个会,提出优建议。如:系统在转账模块,发000用户时出现响应时间过慢的问题,是网络,服务器,硬件,软件 的问题,还是出现了代码内存泄漏的问题。需要找出真正的原因,提出性能优方案。
0:下一轮性能测试
这一步可以直接从第六步开始
现在给大家大家模拟一下在实际工作当中性能测试的本流程:小强是一名软件性能测工程师,刚到来到公司,主管给让他测试已经上线的一款购物网站。这个购物网站新增了一项功能就是积分换礼品的活动。小强该如何展开他的性能测试工作呢?首先,他需要做一个调研,确认公司的网站软硬件的使用环境,配置相应的测试环境,安装好R工具。小强向主管获取了较近到个月,和较近一周的网站业务量。或是从网站以往的日志里进行分析,统计出假期,工作日,白天时间段,夜间时间段,人员使用业务情况。开始进行性能测试方案的编写,小强需要使用到的性能指标根据统计好的数据进行计算出,比如交易吞吐量,交易响应时间,发数,发交易成功率等性能指标。当指标选定之后,我们需要选择性能测试方法,这个业务,小强选择了,负载测试,压力测试,还有就是尖峰冲击测试。一切准备好了,小强打开R性能测试工具,对积分换礼品场景进行录制脚本,录制好脚本以后,进行代码修改优。在录制过程当中,需要开发人员的协助,开启或屏蔽网站的权限,比如验证码,就需要开发人员进行屏蔽。脚本录制修改好后,小强开始按照性能方案里场景设计进行R场景设置。执行完毕后生成的报告和测试方案里的指标需求进行对比,分析出对比值。小强发现当设定00用户同时发处理积分换礼品模块,系统响应时间过慢。小强统计出平均事务响应时间指标值,发用户数等指标。与开发人员沟通,确定影响系统性能的较终问题。
这就是整个使用R进行性能测试的流程,就给大家介绍到这里。是不是很*呢。
_web性能测试的分类-压力测试
在工作当中,我们要针对不同的项目的不同阶段来做不同的性能测试。现在给大家介绍一下性能测试的分类。
web性能测试大至可以分为7大类:压力测试,负载测试,发测试,配置测试,耐久度测试,失败恢复性测试,尖峰冲击测试。
现在就给大家详细介绍一下每一种性能测试:
首先什么是压力测试呢?
压力测试:它是测试web应用在事先预定的某种饱和状态下,比如CPU处于7%利用率的情况下,系统是否还具备处理业务能力,或者系统会发生什么样的错误。
我们举个例子,在体育场上有一个经典动作是托马斯全旋,通过在这样的条件下比赛,裁判来考察运动员的完成质量,由于动作难度系数本一致,重点是完成质量的稳定性。这样同学们就能理解什么是压力测试了,
一般压力测试,就要考察系统的稳定性,就是系统在处于较大的压力下,是否还能维持正常的处理业务的能力。具体的操作过程是通过对系统施加负荷,比如模拟用户对WEB应用的访问,使系统占用保持在一个事先约定的水平,来检验此时系统的表现情况,测试的重点在于系统对用户响应时间的变,系统是否会出现错误或崩溃等等。刚才提到的CPU处于7%利用率,就是压力测试的目标值。
压力测试给大家介绍到这里,你理解了么?
_性能测试的分类-负载测试
在性能测试过程当中,负载测试和压力测试是*混淆的。现在给大家介绍一下负载测试:此方法是通过在被测系统上不断增加负荷,直到事先选定的性能指标(比如响应时间),变为不可接受或系统的某类资源使用已经达到饱和状态,直到找到系统不可使用的极限点的过程 。
举个例子来说,负载测试就像是体育比赛的举重,选手不断地增加重量,挑战自己的极限,直到杠铃加到某一个重量的时候,三次试举,都失败。这一重量的数据就是比赛的较终结果了。
负载测试的主要目的是找出系统处理能力的极限点。
我们可以看一个图,给大家展示一下种优方法经负载测试的结果:
A方法的性能测试极限在A点上,B方法的性能极限在B点上,根据负载测试的定义,比AB两点值 小的部分都是系统的安全运行区间,由于B的数值要大于A,说明彩用B方法优,系统的可扩展性就高了。
(此插入性能测试的分类-负载测试_优对比图.jpg)
负载测试方法的操作是一个不断加压的过程,是一个“性能指标记录-增加负荷”的一个操作循环,直到预定被关注的性能指标不达标,这就是我们要找的极限点,通常场景是这样的:“在给定条件下当前WEB应用将较多允许万个发用户的访问”或是“在给定的条件下,当前WEB应用较多能够在分钟内处理000次用户对数据库的添加或修改操作”。一般常见的负载性能测试的指标是:大家一定要记住哦,响应时间,WEB服务器相关指标,平均CPU利用率。
负载测试就给大家介绍到这里。
_性能测试的分类-发测试
发测试方法通过模拟很多用户在同一时刻访问系统或对系统的一个功能进行操作,来测试系统的性能。通常网银,航空订票等系统都需要大量用户同时访问和操作.
发所考察的是系统在发处理方面是否存在缺陷,它是需要我们后面介绍的工具来进行模拟用户访问操作的。而发所关注的性能问题是什么呢?给大家模拟一个场景。:很多顾客在饭店里就餐,就是一个发场景,可能会出现这样的问题,餐桌是有限的,客人很多,**出桌子的数目,就只能排队叫号了,类似这样抢空间桌子的情况在程序代码中也会出现,叫做资源争用,:如果饭店,还有一个空桌,但被别人预定了,但目前客人很多,服务员如何处理呢,一般是等0分钟左右,联系预定人的电话等方法,类似这样的有关保留预定与放弃的情况在程序代码或是数据库也会出现的,一般叫做活锁和死锁。:如果饭店的服务员忙不过来,可能会出现有的客人已经结账走人了,但服务员没有及时清理桌布,收盘子,导致其他客人不能就餐,无形中使得饭店的接待能力下降很多。由于代码的问题使得类似上面这样的情况在程序运行中也会出现,这就叫做内存泄漏。所以我们得出,发测试关注的性能问题是,你一定要记下,是
系统中的内存泄漏, 线程的控制,也就是锁的问题,还有就是资源争用了。
发测试就给大家介绍到这里。你是否明白了呢?
7_性能测试的分类-配置测试
下面给大家介绍一下配置测试
所谓配置测试,是通过对被测系统所处的软硬件环境进行设置上的调整,来了解其对于系统性能影响的程度,根据结果发现环境的较优配置组合,这个测试方法主要用于性能的优,一般用于web应用正式投入使用的前阶段和运行当中。
我们举个例子,比如我们在使用电脑的过程当中,其实每个人都在做过这样的测试,就是WI7在使用一段时间后,电脑运行的速度可能会减慢,那么我们可能就会上网查询具体变慢的原因,来更改一些系统默认的设置,从实际的效果来验证这些设置的更改是否有效。这种无效的配置很可能恢复成默认值,这就是一种配置测试,
而它的目的,在于发现当前修改的这种配置是否能够有效提高WEB应用的性能。那何时做这种配置测试比较合适呢?一般是我们还没有把所有需要的软件都安装完毕之前,一般是不会做配置测试的,这是因为这段时间即使修改了软件,硬件的配置,进行了优,这种配置也可能被新安装的软件之后覆盖掉,导致优失败,同样的道理,在WEB应用程序代码没有开发完毕,测试没有本完成,BUG没有修复,这个时间是不能进行配置测试的。所以配置测试是测试WEB应用所依赖的软,硬件配置对于性能的影响的。所以我们只需要考虑个部分::软件部分:数据库各个参数的设置,操作系统各个参数的设置,网络带宽的设置。:硬件部分,硬盘缓存,硬盘运行模式,磁盘陈列的设置等等。
好配置测试就给大家介绍到这里。
_耐久度测试
现在我们一块来谈谈性能测试当中的耐久度测试,这种测试的具体方法是使被测试的系统应用在大负荷条件下时间运行,从中发现问题,主要是发现的问题都和被测系统运行时间变以后,一些资源无法释放,导致系统的响应时间慢慢变有关。
一般我们可以发现这几点::就是严重的内存泄漏,会导致系统内存慢慢不够使用了。:数据库连接,数据库游标,应用服务器,资源没有适时的释放,导致系统变慢,:被测系统代码中的数据结构不太合理,在时间运行后,对其中的增,删,改查,等速度会出现一系列的问题。
耐久度测试至少要关注以下几个指标:首先是CPU使用率,可用内存的大小,内存使用百分比等等。通过隔一段时间记录以上的指标,较终形成数据表和相应的图。我们可以看一下以下耐久度测试的绘图:大家可以清楚的看到,这是某个网站较近六天的每小时在线用户的统计。X轴是小时数,Y轴是在线用户数量。
我们可以根据,这个图的变规律,再结合在耐久度测试中记录的CPU,内存等指标,如果者规律不符合,也就是说,当在线用户数较少的时候,内存占用没有下降很多,就可以分析出有关资源分配是否正常的结论了。
那什么时候做耐久度性能测试呢,它可以在代码的开发阶段,也可以在WEB应用程序版本完成,准备上线之前,也可以网站运行当中,都是可以的。但耐久度测试,测试的时间一定要尽可能的,才能从中发现性能问题。如果我们在代码开发的阶段,进行耐久度测试,那运行早期就发现了内存泄漏的问题,就可以中断,然后进行代码的修改。如果WEB网站版本快要上线前期,耐久度测试一定要进行到上线为止。如果在网站运行中的耐久度测试,就需要定时记录各种指标,还需要根据当前网站的性质,来选择时间段,比如假,周末等时间。。所以耐久度测试主要考虑的是时间对于系统的影响,所以它比我们刚才提到的压力,负载,发,测试的时间都要得很多。而且它主要关注的是系统的一个渐进资源消耗的过程的表现。与压力测试关注的一个固定指标下系统的表现,和负载测试较终的那个的负载,发测试关注关发操作发生时系统的表现,都不同。
好耐久度测试就给大家介绍到这里,你明白了?
9_性能测试的分类-失败恢复测试
下面给大家介绍一下失败恢复性测试,
失败恢复性测试,对于大型的WEB网站显得非常重要,一般是针对冗余备份,负载均衡的系统。这个测试方法是用于验证某部分WEB应用程序发生故障时,整个网站是否能够继续让用户使用的能力。
那用户访问网站可能会出现什么样的问题呢?我们知道,WEB应用是存放在服务器硬盘上供用户访问的,而服务器一般都位于IC机房的机架上,用户访问一个WEB应用的过程是这样的,大家可以看图,如果一个用户无法访问某一个网站,首先可能是用户电脑出现了问题,解决的办法就是维修电脑了,还有就是网络线路出现了问题,解决的办法就是更换个网线,修改一下交换机,路由器等设置。最后就是可能是网站服务器出现了问题。如何解决呢,这正是我们要讨论的。首先要提高可用性,进行冗余备份,台,或是多台服务器构成的小服务器场所来承担网站的失败恢复性工作的。看似好像很**的解决服务器故障所带来的影响,但是它是增加了设备,增加了成本,而且备份服务器上网站实际用户也是可以使用的,平时闲置的话呢,非常可惜。所以又可以采取负载均衡的办法,换句话说就是在同样的服务器之前,加入一个调度员,将用户的访问请求尽量平均分配给它们,这样每台服务器的负担就下降了,出现问题的几率就降低很多。其实还有很多的办法可以,把这些办法综合起来就可以达到 网站全天小时可供用户访问了。
说了这么多,那失败恢复性测试,可以使用工具来模拟实验么,答案是O。一般都是人工进行的,实际的操作一般不会有测试工程师的参与。但是作为一名WEB性能测试工程师,一定要有失败恢复测试的意识哦。
好失败恢复性测试就给大家介绍到这里。
0_性能测试的分类-尖峰冲击测试
尖峰冲击测试,就是网站在用户突然 较具增加的情况下是否能够正常工作。我们生活当中,经常会出用户突然增加的情况:比如:购物网站做一些促销打折活动。火车票订票网站在春运时。奥运会网上购票。还有网站公布与用户相关的信息,比如*成绩,录取分数等等。这些情况都会因为用户突然增加,导致网站在某一个时刻无法打开。所以尖峰冲击测试就是为了验证此时网站的应付能力。而这个测试也是需要通过我们后面讲到的R工具来完成的。我们一块来看一下模拟出来的表:
这个表就是网站在某时刻在线用户突然增加的情况,形成了尖峰。大家可以看到,此图表显示的是从点左右到0点左右,用户使用量达到高峰。而其它时间段处于平稳的状态。
好尖峰冲击测试就给大家介绍到这里。
_各种web性能测试方法与比较
给大家介绍了这么多的性能测试方法,在实际的工作当中,它们的执行顺序是怎么样的,它们之间到底有什么的区别和联系呢?我们共同分析一下各种WEB性能测试方法和比较:
性能测试是比较广义的,负载,尖峰测试主要是查看WEB应用在较端的情况下系统的表现,压力,发,耐久度分别考察WEB应用在较大负荷,多用户和时间运行三种条件下的表现情况。配置测试是为当前的WEB应用提供了较优的准备。失败恢复测试就是提高网站的可用性,预防和补救问题了。
其实这7种性能测试,每一种都是从不同的角度和出发点来考察WEB应用的性能表现的。
那在实际工作当中,我们使用工具进行这七种性能测试,是先做哪个,后做哪个呢?
我们可以看一下这个图,来给大家清楚的介绍性能测试的测试顺序:
(插入:各个性能测试顺序图.jpg)
我们使用工具R进行性能测试,在测试的整个过程结束后,得出的个结论是负载测试,可以找到系统崩溃的极限点的位置,同时在进行负载测试的过程当中,已经进行了压力测试,找到了,系统在大于或等于设定的固定指标值情况下依然可以进行某项业务操作。发测试,是在进行负载和压力的时候进行的。而当我们需要进行耐久度测试的时候,系统的性能本处于稳定状态,主要是通过时间运行,发用户的增加,来判断由于时间出现的性能问题。当耐久度测试进行完毕后。系统最后来做尖峰冲击测试,也是需要大量发测试来实现尖峰冲击测试的。
至于配置测试一般是在做以上性能测试之前做一次,在性能测试之后再进行配置测试优,失败恢复性测试是在上面所有性能测试做完后进行的。
这就是各种WEB性能测试的方法与比较,和执行顺序。相信你心中一定是清清楚楚了。
_性能测试应用领域:
下面给大家介绍一下,性能测试的应用领域。
我们使用R性能测试工具,主要是对WEB网站进行性能测试,主要考察有几点:
:当前网站在某个软硬件,网络环境下,具备承担多少用户压力的性能的能力。这点我们需要学会分析场景来设定测试方案和测试用例了。
:当前网站系统是在稳定版本下,做的性能测试。使用R,和性能指标分析,可以预测未来年,到年,甚至0年,当前系统是否还具备支持未来用户增的需求。
网站肯定是随着时间的推移,用户越来越多。服务器压力越来越大。所以做性能测试一定要有这个规划能力。
:通过web性能测试,可以使当前系统性能达到一个较优的状态。换个话来说,就是性能调优的过程:
首先确认当前使用环境的本负载和本指标,然后调整系统运行的环境和实现方法来进行性能测试,最后记录性能测试结果进行分析。这种结果是一种持续的过程,我们主要的调优对是:数据参数,应用服务器,和系统的硬件环境。
:进行性能测试还需要发现性能缺陷,很多的系统在开发环境下测试和运行是没有任何问题的,但是到了客户上线后,随之用户量的增大,访问速度的缓慢,总是会出现一系列意想不到的问题。这是什么原因呢?本到客户上线的系统,功能上不会大的纰漏,一般主要体现在性能问题上。所以性能测试需要在上线前模拟,上线后预测的方式来进行性能测试,发现性能BUG.
性能测试的应用领域就给大家介绍到这里。